# import matplotlib.pyplot as plt
# # print(plt.style.available)
#
# input_values = [1, 2, 3, 4, 5]
# squares = [1, 4, 9, 16, 25]
# plt.style.use("seaborn-v0_8")
#
# fig, ax = plt.subplots()
# ax.plot(input_values, squares, linewidth=3) # linewidth决定了plot()绘制的线条粗细
#
# # 设置坐标轴并给坐标轴加上标签
# ax.set_title("Square Numbers", fontsize=24)
# ax.set_xlabel("Value", fontsize=14)
# ax.set_ylabel("Square of Value", fontsize=14)
#
# # 设置刻度标记的样式
# ax.tick_params(labelsize=13)
#
# plt.show()

# import matplotlib.pyplot as plt
# # print(plt.style.available)
#
# x_values = [1, 2, 3, 4, 5]
# y_values = [1, 4, 9, 16, 25]
#
# plt.style.use("seaborn-v0_8")
#
# fig, ax = plt.subplots()
# ax.scatter(x_values, y_values, s=200)
#
# # 设置图题并给坐标轴加上标签
# ax.set_title("Square Numbers", fontsize=24)
# ax.set_xlabel("Value", fontsize=14)
# ax.set_ylabel("Square of Value", fontsize=14)
#
# # 设置刻度标记的样式
# ax.tick_params(labelsize=14)
#
# plt.show()

#
# import matplotlib.pyplot as plt
# # print(plt.style.available)
#
# x_values = range(1, 1001)
# y_values = [x**2 for x in x_values]
#
# plt.style.use("seaborn-v0_8")
#
# fig, ax = plt.subplots()
# # ax.scatter(x_values, y_values, s=10, color="red")
# # 还可以使用RGB颜色模式定制眼色，此时传递color，并将其设置为一个元组
# # ax.scatter(x_values, y_values, color=(0, 0.8, 0), s = 10)
# # 颜色映射：一个从起始颜色渐变到结束颜色的颜色序列。
# # pyplot模块内置了一组颜色映射。使用这些映射，需要告诉pyplot如何设置数据集中每个点的颜色
# # 如下眼熟了如何根据每个点的y坐标来设置其颜色
# ax.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, s=10)
# # 参数c类似于参数color，但用于将一系列值关联到颜色映射
# # camp告诉pyplot使用那个颜色映射
# # 具体颜色设置可以看蟒蛇书P284页指导
#
#
# # 设置图题并给坐标轴加上标签
# ax.set_title("Square Numbers", fontsize=24)
# ax.set_xlabel("Value", fontsize=14)
# ax.set_ylabel("Square of Value", fontsize=14)
#
# # 设置每个坐标轴的取值范围
# ax.axis([0, 1100, 0, 1_100_000])
# # ax.ticklabel_format(style='plain') # 此方法可以覆盖默认的刻度标记样式
#
# # 设置刻度标记的样式
# # ax.tick_params(labelsize=14)
#
# plt.show()
# # plt.savefig('squares_plot.png', bbox_inches='tight') # 将绘图直接保存到文件中，第二个参数会裁掉多余的空白区域
#



import matplotlib.pyplot as plt
from random_walk import RandomWalk

while True:
    # 创建一个RandomWalk实例
    rw = RandomWalk(50_000)
    rw.fill_walk()

    # 将所有点都绘制出来
    plt.style.use('classic')
    # fig, ax = plt.subplots()
    # 调整尺寸以适应屏幕
    fig, ax = plt.subplots(figsize=(10, 6), dpi=128) # dpi分辨率

    # ax.scatter(rw.x_values, rw.y_values, s=15)

    # 给点着色
    point_numbers = range(rw.num_points)
    ax.scatter(rw.x_values, rw.y_values, s=1, c=point_numbers, cmap=plt.cm.Blues, edgecolors='none')

    # 突出起点和终点
    ax.scatter(0, 0, c='green', edgecolors='none', s=100)
    ax.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none', s=100)

    # 隐藏坐标轴
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)

    ax.set_aspect('equal') # 指定两条轴上刻度的间距必须相等
    plt.show()

    keep_running = input("Make another work? (y/n)")
    if keep_running == 'n':
        break

